﻿using System;
using BrainTechLLC.ImageOperatorsNonAForgeDependent;
using BrainTechLLC.ThreadSafeObjects;
using System.Threading;

namespace BrainTechLLC.WebCamLib3
{
    public interface IVideoFeed : IDisposable 
    {
        ThreadPriority CameraCaptureThreadPriority { get; set; }
        Exception CameraError { get; }
        string CameraMoniker { get; }
        string CameraName { get; }
        void ClearVideoQueue();
        FrameInfo GetNextFrame();
        ThreadSafeQueue<FrameInfo> IncomingFrameQueue { get; }
        int IncomingFrameQueueCount { get; }
        int IncomingVideoHeight { get; }
        int IncomingVideoWidth { get; }
        bool IsProcessing { get; }
        double MinimumTimeBetweenHardwareFrames { get; set; }
        bool StartCameraCapture(ThreadPriority cameraCapturePriority, double minimumTimeBetweenHardwareFrames);
        void StopCameraCapture();
        void TerminateCameraCapture();
        void SignalCameraToStop();
    }
}
